define(function(){
	var ListSortBtn=function(config){
		var sortBtn=this;
		config=config || {};
		sortBtn.$dom=$('<div class="sortBtn"></div>');
		sortBtn.$icon=$('<div class="icon icon-size-16 icon-sort"></div>').appendTo(sortBtn.$dom);
		sortBtn.sortName=config.sortName || 'id';
		config.callback =config.callback ||{}
		sortBtn.changeCallback=config.callback.change || function(){};
		sortBtn.change=function(statusNum){
			if(statusNum!==undefined){
				sortBtn.sortStatus=statusNum;
			}else{
				if(sortBtn.$dom.hasClass('up')){
					sortBtn.sortStatus=1;
				}else if(sortBtn.$dom.hasClass('down')){
					sortBtn.sortStatus=2;
				}else{
					sortBtn.sortStatus=0;
				}
				sortBtn.sortStatus--;
				if(sortBtn.sortStatus<0){
					sortBtn.sortStatus=2;
				}
			}
			var $allSortBtn=sortBtn.$dom.closest('.listTable').find('.sortBtn');
			$allSortBtn.each(function(){
				$(this).attr('class','sortBtn').children('.icon').attr('class','icon icon-size-16 icon-sort');
			})
			switch(sortBtn.sortStatus){
				case 0:
					sortBtn.$dom.attr('class','sortBtn');
					sortBtn.$icon.attr('class','icon icon-size-16 icon-sort');
					break;
				case 1:
					sortBtn.$dom.attr('class','sortBtn up');
					sortBtn.$icon.attr('class','icon icon-size-16 icon-sort-up');
					break;
				case 2:
					sortBtn.$dom.attr('class','sortBtn down');
					sortBtn.$icon.attr('class','icon icon-size-16 icon-sort-down');
					break;
			}
			sortBtn.changeCallback(sortBtn.sortStatus);
		}
		sortBtn.$dom.on('click',function(){
			sortBtn.change();
		});
	}
	return ListSortBtn;
})
